/*
 * File:Handler.java Type:net.wangds.common.chainofresponsibility.Handler
 */

package net.wangds.common.chainofresponsibility;

import net.wangds.common.processor.Processor;

/**
 * 责任链中的处理器.
 * <p>
 * <h1>修改列表:</h1>
 * <ol>
 * <li>checkstyle, by wangds@gmail.com, 2016-01-16 下午18:13</li>
 * <li>初始版本, by wangds@gmail.com, 2013-11-7 09:52:18</li>
 * </ol>
 * </p>
 * 
 * @param <E>
 *          处理中可能发生的异常.
 * @author wangds@gmail.com
 * @version 0.1.2
 * @since 0.1
 */
public interface Handler extends Processor {

  /**
   * 获得下一个责任链处理器.
   * 
   * @return 下一个责任链处理器.
   */
  <H extends Handler> H getNext();

  /**
   * 设置下一个责任链处理器.
   * 
   * @param next
   *          下一个责任链处理器.
   */
  <H extends Handler> void setNext(H next);

  /**
   * 执行本责任链处理过程.
   * 
   * @return 是否通过.
   * @throws E
   *           异常类型.
   */
  boolean handle();

}
